/**
 * @description axios 封装
 */

import axios from "axios";
import { ElMessage ,ElLoading} from 'element-plus'

// 配置rootUrl
const service = axios.create({
  // 基准路径
  baseURL :'/api',//3、设置开发域名
  //4、 超时时间的设置 ms
  timeout: 30000,
  // withCredentials: true ,// 允许携带cookie
  headers:{
    "Content-Type": "application/json;charset=UTF-8",
  } //5、携带过去的请求头
})

// axios 请求拦截 可以设置token
service.interceptors.request.use(
  config => {
    let token = "";//从后台获取token 存储到本地或者其他方式
    if(token){
      config.headers.token=token;
    }
    return config
  },
  err => { 	return Promise.reject(err); }
);

//axios 相应拦截
service.interceptors.response.use(
  response => {
    console.log("response("+response.config.url+")---"+response.data);
    return response
  },
  err => {
    if(err.message.includes('timeout')){
      ElMessage.error("访问超时，请重新尝试");
    }
    return Promise.reject(err);
  }
);


//抛出 get post方法  方法可对传参或url进行修改
export default {
  post(url, params) {
    console.log(`res(POST):-${url}:${JSON.stringify(params)}`);
    return new Promise((resolve,reject)=>{
      const loading = ElLoading.service({
        lock: true,
        text: 'Loading',
        background: 'rgba(0, 0, 0, 0.2)',
      })
      service.post(url,params).then(res=>{
        loading.close();
        resolve(res.data)
      }).catch(err => {
        loading.close();
        reject(err)
      })
    })
  },
  get(url, params={}) {
    console.log(`res(GET):-${url}:${JSON.stringify(params)}`);
    return new Promise((resolve,reject)=>{
      const loading = ElLoading.service({
        lock: true,
        text: 'Loading',
        background: 'rgba(0, 0, 0, 0.2)',
      })
      service.get(url,{
        params
      }).then(res=>{
        loading.close();
        resolve(res.data)
      }).catch(err => {
        loading.close();
        reject(err)
      })
    })
  },
}
